Submission #498096

# Submission time Handle Problem Language Result Execution time Memory
498096 2021-12-24T11:39:54 Z vinnipuh01 Meteors (POI11_met) C++17
74 / 100
6000 ms 40280 KB
#include <iostream>
#include <bits/stdc++.h>
#include <cmath>
#include <algorithm>
#include <vector>
#include <deque>
#include <set>
#include <stack>
#include <string>
#include <map>
#include <queue>
//#define int long long
#pragma GCC optimization("g", on)
#pragma GCC optimize ("inline")
#pragma GCC optimization("03")
#pragma GCC optimization("unroll-loops")
#pragma comment(linker, "/stack:200000000")
#pragma GCC optimize("Ofast")

using namespace std;

const long long oo = 1000000000000000000;

long long sum, ans = 0, mx = 0, mn = 1000000000, num, pos;


/*
    ViHHiPuh

   (( `'-""``""-'` ))
     )-__-_.._-__-(
   / --- (o _ o) --- \
   \ .-* ( .0. ) *-. /
   _'-. ,_ '=' _, .-'_
  / `;#'#'# - #'#'#;` \
 \_)) -----'#'----- ((_/
      # --------- #
  '# ------- ------ #'
  /..-'# ------- #'-.\
  _\...-\'# -- #'/-.../_
  ((____)- '#' -(____))


    cout << fixed << setprecision(6) << x;

    ios_base::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);

    freopen ( "sum.in", "r", stdin )
*/

vector <int> vv[ 300002 ];
vector <int>  v[ 300002 ];
int L[ 300002 ], R[ 300002 ];
int an[ 300002 ];
int t[ 1200002 ], p[ 1200002 ];

void pus( int v ) {
	if ( p[ v ] ) {
		p[ v + v ] += p[ v ];
		p[ v + v + 1 ] += p[ v ];
		t[ v + v ] += p[ v ];
		t[ v + v + 1 ] += p[ v ];
		p[ v ] = 0;
	}
}

void gett( int v, int tl, int tr, int pos ) {
	if ( tl > pos || tr < pos )
		return;
	if ( tl == tr ) {
		num += t[ v ];
		return;
	}
	pus( v );
	int mid = ( tl + tr ) / 2;
	if ( mid >= pos )
		gett( v + v, tl, mid, pos );
	if ( mid + 1 <= pos )
		gett( v + v + 1, mid + 1, tr, pos );
}

void upd( int v, int tl, int tr, int l, int r ) {
	if ( tl > r || tr < l )
		return;
	if ( tl >= l && tr <= r ) {
		t[ v ] += num;
		p[ v ] += num;
		return;
	}
	pus( v );
	int mid = ( tl + tr ) / 2;
	if ( mid >= l )
		upd( v + v, tl, mid, l, r );
	if ( mid + 1 <= r )
		upd( v + v + 1, mid + 1, tr, l, r );
}

main () {
    ios_base::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);
    int n, m;
    cin >> n >> m;
    int a[ m + 1 ];
    for ( int i = 1; i <= m; i ++ ) {
    	cin >> a[ i ];
    	vv[ a[ i ] ].push_back( i );
    }
    int b[ n + 1 ];
    for ( int i = 1; i <= n; i ++ ) {
    	cin >> b[ i ];
    }
    int q;
    cin >> q;
    int l[ q + 1 ], r[ q + 1 ], x[ q + 1 ];
    for ( int i = 1; i <= q; i ++ ) {
    	cin >> l[ i ] >> r[ i ] >> x[ i ];
    }
    for ( int i = 1; i <= n; i ++ )
    	L[ i ] = 1, R[ i ] = q + 1;
    ans = 1;
    int mid;
    while ( ans ) {
    	ans = 0;
    	for ( int j = 1; j <= q; j ++ )
    		v[ j ].clear();
		for ( int i = 1; i <= n; i ++ ) {
//			cout << i << " - " << L[ i ] << " " << R[ i ] << "\n";
			if ( L[ i ] == R[ i ] )
				continue;
    		mid = ( L[ i ] + R[ i ] ) / 2;
    		v[ mid ].push_back( i ); 
    		ans = 1;
		}
		for ( int j = 1; j <= q; j ++ ) {
			num = x[ j ];
			if ( l[ j ] <= r[ j ] )	
				upd( 1, 1, m, l[ j ], r[ j ]  );
			else
				upd( 1, 1, m, 1, r[ j ] ), upd( 1, 1, m, l[ j ], m );
			if ( v[ j ].size() == 0 )
				continue;
			for ( auto i : v[ j ] ) {
				num = 0;
				for ( auto pos : vv[ i ] ) {
					gett( 1, 1, m, pos );
					if ( num >= b[ i ] ) {
						break;
					}
				}
//				cout << i << " - " << num << "\n";
				if ( num >= b[ i ] )
					R[ i ] = j;
				else
					L[ i ] = j + 1;
			}
		}
		for ( int j = 1; j <= q; j ++ ) {
			num = -x[ j ];
			if ( l[ j ] <= r[ j ] )	
				upd( 1, 1, m, l[ j ], r[ j ]  );
			else
				upd( 1, 1, m, 1, r[ j ] ), upd( 1, 1, m, l[ j ], m );
		}
	}
	for ( int i = 1; i <= n; i ++ ) {
		if ( L[ i ] <= q )
			cout << L[ i ] << "\n";
		else
			cout << "NIE\n";
	}
}

Compilation message

met.cpp:13: warning: ignoring '#pragma GCC optimization' [-Wunknown-pragmas]
   13 | #pragma GCC optimization("g", on)
      | 
met.cpp:15: warning: ignoring '#pragma GCC optimization' [-Wunknown-pragmas]
   15 | #pragma GCC optimization("03")
      | 
met.cpp:16: warning: ignoring '#pragma GCC optimization' [-Wunknown-pragmas]
   16 | #pragma GCC optimization("unroll-loops")
      | 
met.cpp:17: warning: ignoring '#pragma comment ' [-Wunknown-pragmas]
   17 | #pragma comment(linker, "/stack:200000000")
      | 
met.cpp:99:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   99 | main () {
      | ^~~~
met.cpp: In function 'int main()':
met.cpp:125:6: warning: this 'for' clause does not guard... [-Wmisleading-indentation]
  125 |      for ( int j = 1; j <= q; j ++ )
      |      ^~~
met.cpp:127:3: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for'
  127 |   for ( int i = 1; i <= n; i ++ ) {
      |   ^~~
# Verdict Execution time Memory Grader output
1 Correct 11 ms 14412 KB Output is correct
2 Correct 13 ms 14412 KB Output is correct
3 Correct 13 ms 14412 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 12 ms 14412 KB Output is correct
2 Correct 12 ms 14492 KB Output is correct
3 Correct 13 ms 14436 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 508 ms 16972 KB Output is correct
2 Correct 659 ms 18860 KB Output is correct
3 Correct 614 ms 18884 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 595 ms 18048 KB Output is correct
2 Correct 600 ms 18044 KB Output is correct
3 Correct 616 ms 19112 KB Output is correct
4 Correct 88 ms 17396 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 276 ms 17460 KB Output is correct
2 Correct 329 ms 19524 KB Output is correct
3 Correct 307 ms 15036 KB Output is correct
4 Correct 618 ms 19020 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 593 ms 16552 KB Output is correct
2 Correct 483 ms 18116 KB Output is correct
3 Correct 547 ms 16856 KB Output is correct
4 Correct 662 ms 20280 KB Output is correct
# Verdict Execution time Memory Grader output
1 Execution timed out 6029 ms 40280 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 6018 ms 38772 KB Time limit exceeded
2 Halted 0 ms 0 KB -