# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
41240 |
2018-02-15T05:06:38 Z |
wzy |
Meteors (POI11_met) |
C++11 |
|
6000 ms |
23348 KB |
#include <bits/stdc++.h>
#define F first
#define S second
using namespace std;
inline int read_int() {
register char c=0;
int a=0;
while (c<33) c=getchar();
while (c>33) {
a=a*10+c-'0', c=getchar();
}
return a;
}
int ans[300005],n , m , qt[300005] , k;
vector<int> o[300005];
vector<pair< pair<int,int> , int > > querys;
long long bit[300005];
void upd(int x , int vl){
for(int i = x; i < 300005 ; i+= (i&-i)){
bit[i] += vl;
}
}
long long qr(int x){
if(x == 0) return 0;
long long s = 0;
for(int i = x ; i > 0 ; i-=(i&-i)){
if(s >= (int) 1e17){
if(bit[i] >= (int) 1e17) continue;
else s += bit[i];
}
else if(s <= -((int) 1e17)){
if(bit[i] <= -((int) 1e17)) continue;
else s+= bit[i];
}
else s+= bit[i];
}
return s;
}
void update(int x , int y, int vl){
upd(x, vl);
upd(y+1, -vl);
}
long long query(int x){
return qr(x);
}
void solve(int l , int r , const vector<int> & opt){
int mid = (l+r)/2;
memset(bit, 0 , sizeof bit);
for(int i = 0 ; i < mid ; i++){
pair< pair<int,int> , int> info = querys[i];
if(info.F.F > info.F.S){
update(info.F.F , m , info.S);
update(1, info.F.S , info.S);
}
else{
update(info.F.F , info.F.S , info.S);
}
}
vector<int> leftc , rightc;
for(int j = 0 ; j < opt.size() ; j++){
int i = opt[j];
int sj = 0;
for(int w = 0 ; w < o[i].size(); w++){
int c = o[i][w];
sj += query(c);
if(sj >= qt[i]) break;
}
if(sj >= qt[i]) leftc.push_back(i);
else rightc.push_back(i);
}
if(l == r){
for(int i = 0 ; i < leftc.size();i++) ans[leftc[i]] = l;
for(int i = 0 ; i < rightc.size();i++) ans[rightc[i]] = -1;
leftc.clear() , rightc.clear();
return;
}
else{
if(leftc.size()){
solve(l , mid , leftc);
leftc.clear();
}
if(rightc.size()){
solve(mid + 1 , r , rightc);
rightc.clear();
}
}
}
int main(){
n = read_int() , m = read_int();
vector<int> candidatos;
for(int i = 1 ; i <= m;i++){
int x;
x = read_int();
o[x].push_back(i);
}
for(int i = 1 ; i<= n ;i++){
qt[i] = read_int();
candidatos.push_back(i);
}
k = read_int();
for(int i = 0 ; i < k ;i ++){
int l , r ,v;
l = read_int() , r = read_int() , v =read_int();
querys.push_back(pair<pair<int,int> , int>(pair<int,int>(l , r) , v));
}
solve(1, k , candidatos);
for(int i = 1 ; i <= n; i++){
if(ans[i] == -1) puts("NIE");
else printf("%d\n" , ans[i]);
}
}
Compilation message
met.cpp: In function 'void solve(int, int, const std::vector<int>&)':
met.cpp:70:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int j = 0 ; j < opt.size() ; j++){
^
met.cpp:73:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int w = 0 ; w < o[i].size(); w++){
^
met.cpp:82:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int i = 0 ; i < leftc.size();i++) ans[leftc[i]] = l;
^
met.cpp:83:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int i = 0 ; i < rightc.size();i++) ans[rightc[i]] = -1;
^
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
68 ms |
9720 KB |
Output is correct |
2 |
Correct |
36 ms |
9824 KB |
Output is correct |
3 |
Correct |
172 ms |
9876 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
16 ms |
9948 KB |
Output is correct |
2 |
Correct |
15 ms |
9948 KB |
Output is correct |
3 |
Correct |
247 ms |
10000 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
138 ms |
11344 KB |
Output is correct |
2 |
Correct |
3546 ms |
13340 KB |
Output is correct |
3 |
Execution timed out |
6065 ms |
13340 KB |
Time limit exceeded |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Execution timed out |
6039 ms |
13340 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Execution timed out |
6034 ms |
13340 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2631 ms |
13340 KB |
Output is correct |
2 |
Execution timed out |
6068 ms |
13340 KB |
Time limit exceeded |
3 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Execution timed out |
6047 ms |
23348 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Execution timed out |
6060 ms |
23348 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |