답안 #142789

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
142789 2019-08-11T03:51:53 Z cheetose 역사적 조사 (JOI14_historical) C++11
40 / 100
4000 ms 13148 KB
#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<vector>
#include<queue>
#include<bitset>
#include<string>
#include<stack>
#include<set>
#include<unordered_set>
#include<map>
#include<unordered_map>
#include<cstring>
#include<complex>
#include<cmath>
#include<iomanip>
#include<numeric>
#include<algorithm>
#include<list>
#include<functional>
#include<cassert>
#define mp make_pair
#define pb push_back
#define X first
#define Y second
#define y0 y12
#define y1 y22
#define INF 1987654321
#define PI 3.141592653589793238462643383279502884
#define fup(i,a,b,c) for(int (i)=(a);(i)<=(b);(i)+=(c))
#define fdn(i,a,b,c) for(int (i)=(a);(i)>=(b);(i)-=(c))
#define MEM0(a) memset((a),0,sizeof(a));
#define MEM_1(a) memset((a),-1,sizeof(a));
#define ALL(a) a.begin(),a.end()
#define SYNC ios_base::sync_with_stdio(false);cin.tie(0)
using namespace std;
typedef long long ll;
typedef long double ld;
typedef double db;
typedef unsigned int uint;
typedef unsigned long long ull;
typedef pair<int, int> Pi;
typedef pair<ll, ll> Pll;
typedef pair<ld, ld> Pd;
typedef vector<int> Vi;
typedef vector<ll> Vll;
typedef vector<double> Vd;
typedef vector<Pi> VPi;
typedef vector<Pll> VPll;
typedef vector<Pd> VPd;
typedef tuple<int, int, int> iii;
typedef tuple<int,int,int,int> iiii;
typedef tuple<ll, ll, ll> LLL;
typedef vector<iii> Viii;
typedef vector<LLL> VLLL;
typedef complex<double> base;
const ll MOD = 1000000007;
ll POW(ll a, ll b, ll MMM = MOD) {ll ret=1; for(;b;b>>=1,a=(a*a)%MMM)if(b&1)ret=(ret*a)% MMM; return ret; }
ll gcd(ll a, ll b) { return b ? gcd(b, a%b) : a; }
ll lcm(ll a, ll b) { if (a == 0 || b == 0)return a + b; return a*(b / gcd(a, b)); }
int dx[] = { 0,1,0,-1,1,1,-1,-1 }, dy[] = { 1,0,-1,0,1,-1,1,-1 };

int n,m,sz,N;
ll a[100000];
int cnt[1000001];
ll ans[100000];
set<Pll,greater<Pll> > S;
struct query {
	int l, r, i;
	query() :query(0, 0, 0) {}
	query(int L, int R, int I) :l(L), r(R), i(I) {}
	bool operator < (const query& Q)
	{
		int lg = r / sz, rg = Q.r / sz;
		return lg == rg ? l < Q.l : lg < rg;
	}
}q[100000];
Vll vv;
void add(int x)
{
	auto it=S.find(mp(vv[x]*cnt[x],x));
	S.erase(it);
	cnt[x]++;
	S.insert(mp(vv[x]*cnt[x],x));
}
void erase(int x)
{
	auto it=S.find(mp(vv[x]*cnt[x],x));
	S.erase(it);
	cnt[x]--;
	S.insert(mp(vv[x]*cnt[x],x));
}
int main() {
	scanf("%d%d",&n,&m);
	sz = sqrt(n);
	fup(i, 0, n - 1, 1)
	{
		scanf("%lld", a + i);
		vv.pb(a[i]);
	}
	sort(ALL(vv));
	vv.resize(unique(ALL(vv))-vv.begin());
	fup(i,0,n-1,1)a[i]=lower_bound(ALL(vv),a[i])-vv.begin();
	N=vv.size();
	fup(i,0,N-1,1)S.insert(mp(0,i));
	fup(i, 0, m - 1, 1)
	{
		int L, R;
		scanf("%d%d", &L, &R);
		q[i] = query(L-1, R-1, i);
	}
	sort(q, q + m);
	int L = 0, R = 0;
	add(a[0]);
	for (int i = 0; i < m; i++)
	{
		int nl = q[i].l, nr = q[i].r;
		if (nr > R)
		{
			for (int k = R + 1; k <= nr; k++)
				add(a[k]);
		}
		if (nr<R)
		{
			for (int k = R; k > nr; k--)
				erase(a[k]);
		}
		if (nl < L)
		{
			for (int k = L - 1; k >= nl; k--)
				add(a[k]);
		}
		if (nl > L)
		{
			for (int k = L; k < nl; k++)
				erase(a[k]);
		}
		ans[q[i].i] = (*S.begin()).X;
		L = nl, R = nr;
	}
	fup(i, 0, m - 1, 1)printf("%lld\n", ans[i]);
}

Compilation message

historic.cpp: In function 'int main()':
historic.cpp:94:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d%d",&n,&m);
  ~~~~~^~~~~~~~~~~~~~
historic.cpp:98:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%lld", a + i);
   ~~~~~^~~~~~~~~~~~~~~
historic.cpp:109:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d%d", &L, &R);
   ~~~~~^~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 1656 KB Output is correct
2 Correct 3 ms 1528 KB Output is correct
3 Correct 3 ms 1580 KB Output is correct
4 Correct 4 ms 1528 KB Output is correct
5 Correct 4 ms 1528 KB Output is correct
6 Correct 3 ms 1528 KB Output is correct
7 Correct 3 ms 1528 KB Output is correct
8 Correct 4 ms 1656 KB Output is correct
9 Correct 3 ms 1528 KB Output is correct
10 Correct 4 ms 1528 KB Output is correct
11 Correct 3 ms 1528 KB Output is correct
12 Correct 3 ms 1528 KB Output is correct
13 Correct 3 ms 1528 KB Output is correct
14 Correct 3 ms 1528 KB Output is correct
15 Correct 3 ms 1528 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 1656 KB Output is correct
2 Correct 5 ms 1528 KB Output is correct
3 Correct 10 ms 1528 KB Output is correct
4 Correct 23 ms 1784 KB Output is correct
5 Correct 57 ms 1784 KB Output is correct
6 Correct 98 ms 1784 KB Output is correct
7 Correct 110 ms 1784 KB Output is correct
8 Correct 79 ms 1784 KB Output is correct
9 Correct 88 ms 1784 KB Output is correct
10 Correct 147 ms 1956 KB Output is correct
11 Correct 142 ms 1892 KB Output is correct
12 Correct 144 ms 1912 KB Output is correct
13 Correct 137 ms 1912 KB Output is correct
14 Correct 131 ms 1784 KB Output is correct
15 Correct 135 ms 1912 KB Output is correct
16 Correct 88 ms 1912 KB Output is correct
17 Correct 44 ms 1912 KB Output is correct
18 Correct 139 ms 1912 KB Output is correct
19 Correct 152 ms 2040 KB Output is correct
20 Correct 149 ms 2040 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 1656 KB Output is correct
2 Correct 4 ms 1528 KB Output is correct
3 Correct 3 ms 1528 KB Output is correct
4 Correct 4 ms 1656 KB Output is correct
5 Correct 5 ms 1656 KB Output is correct
6 Correct 5 ms 1656 KB Output is correct
7 Correct 9 ms 1784 KB Output is correct
8 Correct 16 ms 2040 KB Output is correct
9 Correct 41 ms 2696 KB Output is correct
10 Correct 20 ms 2728 KB Output is correct
11 Correct 105 ms 6120 KB Output is correct
12 Correct 76 ms 4012 KB Output is correct
13 Correct 130 ms 4972 KB Output is correct
14 Correct 211 ms 8168 KB Output is correct
15 Correct 240 ms 10864 KB Output is correct
16 Correct 274 ms 12140 KB Output is correct
17 Correct 62 ms 4208 KB Output is correct
18 Correct 97 ms 6164 KB Output is correct
19 Correct 161 ms 13148 KB Output is correct
20 Correct 124 ms 11116 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 242 ms 2248 KB Output is correct
2 Correct 954 ms 2676 KB Output is correct
3 Correct 2697 ms 3376 KB Output is correct
4 Execution timed out 4014 ms 4076 KB Time limit exceeded
5 Halted 0 ms 0 KB -