Submission #88687


Source Code Expand

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <queue>
#include <cmath>
#include <stack>

#define f first
#define s second
#define mkp make_pair
#define pb push_back
#define pii pair < int , int > 
#define FILL(a,b) memset(a,b,sizeof(a))
#define FOR(a,b,c) for(a=b;a<=c;a++)
#define TFOR(a,b,c) for(a=b;a>=c;a--)
#define VFOR(a,b) for(a=0;a<b.size();a++)
#define ll long long
#define INF (int)1000000000
#define LINF (ll)1e16
#define vi vector<int>

using namespace std;

int N,ss=0;
int Ar[1100005];
int sma[1100005];
int big[1100005];
pii ST[1100005];
pii val[110005];
vector< pii > vec,v2;

int main()
{
	int i,j;
	scanf(" %d",&N);
	FOR(i,1,N)
		scanf(" %d",&Ar[i]);

	ST[++ss]=mkp(-1,N+1);
	TFOR(i,N,1)
	{
		while(ST[ss].f > Ar[i]) ss--;
		sma[i]=ST[ss].s;
		ST[++ss]=mkp(Ar[i],i);
	}

	ss=0;
	ST[++ss]=mkp(INF,0);
	FOR(i,1,N)
	{
		while(ST[ss].f < Ar[i]) ss--;
		big[i]=ST[ss].s;
		ST[++ss]=mkp(Ar[i],i);
	}

	FOR(i,1,N)
		val[i]=mkp(Ar[i]-i,i);
	sort(val+1,val+N+1);

	FOR(i,1,N)
		FOR(j,i+1,N)
		{
			if(val[j].f!=val[i].f) break;
			if(val[j].s >= sma[val[i].s]) break;
			if(val[i].s <= big[val[j].s]) continue;
			vec.pb(mkp(val[i].s,val[j].s)); break;
		}

	sort(vec.begin(),vec.end());
	
	int mn=INF;
	for(i=vec.size()-1; i>=0; i--)
	{
		if(vec[i].s > mn) continue;
		v2.pb(vec[i]);
		mn=vec[i].s;
	}

	sort(v2.begin(),v2.end());
	printf("%d\n",(int)v2.size());
	VFOR(i,v2) printf("%d %d\n",v2[i].f,v2[i].s);
	return 0;
}

Submission Info

Submission Time
Task 15 - Empodia
User oyildiz
Language C++ (G++ 4.6.4)
Score 100
Code Size 1556 Byte
Status AC
Exec Time 540 ms
Memory 24360 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:36:17: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
./Main.cpp:38:22: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]

Judge Result

Set Name Set01 Set02 Set03 Set04 Set05 Set06 Set07 Set08 Set09 Set10 Set11 Set12 Set13 Set14 Set15 Set16 Set17 Set18 Set19 Set20
Score / Max Score 5 / 5 5 / 5 5 / 5 5 / 5 5 / 5 5 / 5 5 / 5 5 / 5 5 / 5 5 / 5 5 / 5 5 / 5 5 / 5 5 / 5 5 / 5 5 / 5 5 / 5 5 / 5 5 / 5 5 / 5
Status
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
Set Name Test Cases
Set01 01
Set02 02
Set03 03
Set04 04
Set05 05
Set06 06
Set07 07
Set08 08
Set09 09
Set10 10
Set11 11
Set12 12
Set13 13
Set14 14
Set15 15
Set16 16
Set17 17
Set18 18
Set19 19
Set20 20
Case Name Status Exec Time Memory
01 AC 35 ms 10164 KB
02 AC 59 ms 10156 KB
03 AC 36 ms 10176 KB
04 AC 36 ms 10140 KB
05 AC 37 ms 10212 KB
06 AC 36 ms 10164 KB
07 AC 37 ms 10176 KB
08 AC 36 ms 10120 KB
09 AC 37 ms 10172 KB
10 AC 37 ms 10172 KB
11 AC 56 ms 10680 KB
12 AC 54 ms 10932 KB
13 AC 55 ms 10672 KB
14 AC 55 ms 10796 KB
15 AC 55 ms 10668 KB
16 AC 58 ms 10808 KB
17 AC 58 ms 10928 KB
18 AC 49 ms 10548 KB
19 AC 55 ms 10804 KB
20 AC 540 ms 24360 KB