You are given N counters, initially set to 0, and you have two possible operations on them:
- increase(X) − counter X is increased by 1,
- max counter − all counters are set to the maximum value of any counter.
A non-empty array A of M integers is given. This array represents consecutive operations:
- if A[K] = X, such that 1 ≤ X ≤ N, then operation K is increase(X),
- if A[K] = N + 1 then operation K is max counter.
For example, given integer N = 5 and array A such that:
A[0] = 3 A[1] = 4 A[2] = 4 A[3] = 6 A[4] = 1 A[5] = 4 A[6] = 4the values of the counters after each consecutive operation will be:
(0, 0, 1, 0, 0) (0, 0, 1, 1, 0) (0, 0, 1, 2, 0) (2, 2, 2, 2, 2) (3, 2, 2, 2, 2) (3, 2, 2, 3, 2) (3, 2, 2, 4, 2)The goal is to calculate the value of every counter after all operations.
Write a function:
vector<int> solution(int N, vector<int> &A);
that, given an integer N and a non-empty array A consisting of M integers, returns a sequence of integers representing the values of the counters.
Result array should be returned as a vector of integers.
For example, given:
A[0] = 3 A[1] = 4 A[2] = 4 A[3] = 6 A[4] = 1 A[5] = 4 A[6] = 4the function should return [3, 2, 2, 4, 2], as explained above.
Write an efficient algorithm for the following assumptions:
- N and M are integers within the range [1..100,000];
- each element of array A is an integer within the range [1..N + 1].
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(int N, vector<int> &A) {
// write your code in C++14 (g++ 6.2.0)
vector<int> counter(N,0);
int max_counter = 0;
//시간복잡도 N
for(int i = 0; i<A.size(); i++){
if(A[i] >=1 && A[i] <= N){
counter[A[i]-1] ++;
max_counter = max(max_counter, counter[A[i]-1]);
}
else if(A[i] == N+1){
//시간복잡도 N
fill_n(counter.begin(), N, max_counter);
}
}
//시간복잡도 N^2 => 10000000000
return counter;
}
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(int N, vector<int> &A) {
// write your code in C++14 (g++ 6.2.0)
vector<int> counter(N,0);
int max_counter = 0;
//시간복잡도 N
for(int i = 0; i<A.size(); i++){
if(A[i] >=1 && A[i] <= N){
counter[A[i]-1] ++;
max_counter = max(max_counter, counter[A[i]-1]);
}
else if(A[i] == N+1){
//시간복잡도 N
fill_n(counter.begin(), N, max_counter);
}
}
//시간복잡도 N^2 => 10000000000
return counter;
}
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(int N, vector<int> &A) {
// write your code in C++14 (g++ 6.2.0)
vector<int> counter(N,0);
int max_counter = 0;
//시간복잡도 N
for(int i = 0; i<A.size(); i++){
if(A[i] == N+1){
}
if(A[i] >=1 && A[i] <= N){
counter[A[i]-1] ++;
max_counter = max(max_counter, counter[A[i]-1]);
}
else if(A[i] == N+1){
//시간복잡도 N
fill_n(counter.begin(), N, max_counter);
}
}
//시간복잡도 N^2 => 10000000000
return counter;
}
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(int N, vector<int> &A) {
// write your code in C++14 (g++ 6.2.0)
vector<int> counter(N,0);
int max_counter = 0;
//시간복잡도 N
for(int i = 0; i<A.size(); i++){
if(A[i] == N+1){
counter[A[i]-1] =
}
if(A[i] >=1 && A[i] <= N){
counter[A[i]-1] ++;
max_counter = max(max_counter, counter[A[i]-1]);
}
else if(A[i] == N+1){
//시간복잡도 N
fill_n(counter.begin(), N, max_counter);
}
}
//시간복잡도 N^2 => 10000000000
return counter;
}
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(int N, vector<int> &A) {
// write your code in C++14 (g++ 6.2.0)
vector<int> counter(N,0);
int max_counter = 0;
//시간복잡도 N
for(int i = 0; i<A.size(); i++){
if(A[i] == N+1){
counter[A[i]-1] = max_counter;
}else{
}
if(A[i] >=1 && A[i] <= N){
counter[A[i]-1] ++;
max_counter = max(max_counter, counter[A[i]-1]);
}
else if(A[i] == N+1){
//시간복잡도 N
fill_n(counter.begin(), N, max_counter);
}
}
//시간복잡도 N^2 => 10000000000
return counter;
}
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(int N, vector<int> &A) {
// write your code in C++14 (g++ 6.2.0)
vector<int> counter(N,0);
int max_counter = 0;
//시간복잡도 N
for(int i = 0; i<A.size(); i++){
if(A[i] == N+1){
counter[A[i]-1] = max_counter;
}else{
if(A[i] >=1 && A[i] <= N){
counter[A[i]-1] ++;
max_counter = max(max_counter, counter[A[i]-1]);
}
}
}
//시간복잡도 N^2 => 10000000000
return counter;
}
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(int N, vector<int> &A) {
// write your code in C++14 (g++ 6.2.0)
vector<int> counter(N,0);
int max_counter = 0;
//시간복잡도 N
for(int i = 0; i<A.size(); i++){
if(A[i] == N+1){
counter[A[i]-1] = max_counter;
}else{
if(A[i] >=1 && A[i] <= N){
if(counter[A[i]-1] < max_counter) counter[A[i]-1] =ma
counter[A[i]-1] ++;
max_counter = max(max_counter, counter[A[i]-1]);
}
}
}
//시간복잡도 N^2 => 10000000000
return counter;
}
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(int N, vector<int> &A) {
// write your code in C++14 (g++ 6.2.0)
vector<int> counter(N,0);
int max_counter = 0;
//시간복잡도 N
for(int i = 0; i<A.size(); i++){
if(A[i] == N+1){
counter[A[i]-1] = max_counter;
}else{
if(A[i] >=1 && A[i] <= N){
if(counter[A[i]-1] < max_counter) counter[A[i]-1] = max_counter+1;
else{
}
counter[A[i]-1] ++;
max_counter = max(max_counter, counter[A[i]-1]);
}
}
}
//시간복잡도 N^2 => 10000000000
return counter;
}
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(int N, vector<int> &A) {
// write your code in C++14 (g++ 6.2.0)
vector<int> counter(N,0);
int max_counter = 0;
//시간복잡도 N
for(int i = 0; i<A.size(); i++){
if(A[i] == N+1){
counter[A[i]-1] = max_counter;
}else{
if(A[i] >=1 && A[i] <= N){
if(counter[A[i]-1] < max_counter) counter[A[i]-1] = max_counter+1;
else{
counter[A[i]-1] ++;
max_counter = max(max_counter, counter[A[i]-1]);
}
}
}
}
//시간복잡도 N^2 => 10000000000
return counter;
}
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(int N, vector<int> &A) {
// write your code in C++14 (g++ 6.2.0)
vector<int> counter(N,0);
int max_counter = 0;
//시간복잡도 N
for(int i = 0; i<A.size(); i++){
if(A[i] == N+1){
counter[A[i]-1] = max_counter;
}else{
if(A[i] >=1 && A[i] <= N){
if(counter[A[i]-1] < max_counter) counter[A[i]-1] = max_counter+1;
else counter[A[i]-1] ++;
max_counter = max(max_counter, counter[A[i]-1]);
}
}
}
//시간복잡도 N^2 => 10000000000
return counter;
}
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(int N, vector<int> &A) {
// write your code in C++14 (g++ 6.2.0)
vector<int> counter(N,0);
int max_counter = 0;
//시간복잡도 N
for(int i = 0; i<A.size(); i++){
if(A[i] == N+1){
counter[A[i]-1] = max_counter;
}else{
if(A[i] >=1 && A[i] <= N){
if(counter[A[i]-1] < max_counter) counter[A[i]-1] = max_counter+1;
else counter[A[i]-1] ++;
max_counter = max(max_counter, counter[A[i]-1]);
}
}
}
//시간복잡도 N^2 => 10000000000
return counter;
}
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(int N, vector<int> &A) {
// write your code in C++14 (g++ 6.2.0)
vector<int> counter(N,0);
int max_counter = 0;
int last_max_counter = 0;
//시간복잡도 N
for(int i = 0; i<A.size(); i++){
if(A[i] == N+1){
counter[A[i]-1] = max_counter;
}else{
if(A[i] >=1 && A[i] <= N){
if(counter[A[i]-1] < max_counter) counter[A[i]-1] = max_counter+1;
else counter[A[i]-1] ++;
max_counter = max(max_counter, counter[A[i]-1]);
}
}
}
//시간복잡도 N^2 => 10000000000
return counter;
}
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(int N, vector<int> &A) {
// write your code in C++14 (g++ 6.2.0)
vector<int> counter(N,0);
int max_counter = 0;
int last_max_counter = 0;
//시간복잡도 N
for(int i = 0; i<A.size(); i++){
if(A[i] == N+1){
last_max_counter = max_counter;
}else{
if(A[i] >=1 && A[i] <= N){
if(counter[A[i]-1] < max_counter) counter[A[i]-1] = max_counter+1;
else counter[A[i]-1] ++;
max_counter = max(max_counter, counter[A[i]-1]);
}
}
}
//시간복잡도 N^2 => 10000000000
return counter;
}
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(int N, vector<int> &A) {
// write your code in C++14 (g++ 6.2.0)
vector<int> counter(N,0);
int max_counter = 0;
int last_max_counter = 0;
//시간복잡도 N
for(int i = 0; i<A.size(); i++){
if(A[i] == N+1){
last_max_counter = max_counter;
}else{
if(A[i] >=1 && A[i] <= N){
if(counter[A[i]-1] < last_max_counter) counter[A[i]-1] = last_max_counter+1;
else counter[A[i]-1] ++;
max_counter = max(max_counter, counter[A[i]-1]);
}
}
}
//시간복잡도 N^2 => 10000000000
return counter;
}
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(int N, vector<int> &A) {
// write your code in C++14 (g++ 6.2.0)
vector<int> counter(N,0);
int max_counter = 0;
int last_max_counter = 0;
//시간복잡도 N
for(int i = 0; i<A.size(); i++){
if(A[i] == N+1){
last_max_counter = max_counter;
}else{
if(A[i] >=1 && A[i] <= N){
if(counter[A[i]-1] < last_max_counter) counter[A[i]-1] = last_max_counter+1;
else counter[A[i]-1] ++;
max_counter = max(max_counter, counter[A[i]-1]);
}
}
}
for(int i =0; i<counter.size(); i++){
if(counter[i] )
}
//시간복잡도 N^2 => 10000000000
return counter;
}
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(int N, vector<int> &A) {
// write your code in C++14 (g++ 6.2.0)
vector<int> counter(N,0);
int max_counter = 0;
int last_max_counter = 0;
//시간복잡도 N
for(int i = 0; i<A.size(); i++){
if(A[i] == N+1){
last_max_counter = max_counter;
}else{
if(A[i] >=1 && A[i] <= N){
if(counter[A[i]-1] < last_max_counter) counter[A[i]-1] = last_max_counter+1;
else counter[A[i]-1] ++;
max_counter = max(max_counter, counter[A[i]-1]);
}
}
}
for(int i =0; i<counter.size(); i++){
if(counter[i] < last_max_counter){
}
}
//시간복잡도 N^2 => 10000000000
return counter;
}
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(int N, vector<int> &A) {
// write your code in C++14 (g++ 6.2.0)
vector<int> counter(N,0);
int max_counter = 0;
int last_max_counter = 0;
//시간복잡도 N
for(int i = 0; i<A.size(); i++){
if(A[i] == N+1){
last_max_counter = max_counter;
}else{
if(A[i] >=1 && A[i] <= N){
if(counter[A[i]-1] < last_max_counter) counter[A[i]-1] = last_max_counter+1;
else counter[A[i]-1] ++;
max_counter = max(max_counter, counter[A[i]-1]);
}
}
}
for(int i =0; i<counter.size(); i++){
if(counter[i] < last_max_counter){
counter[i] = last_max_counter;
}
}
//시간복잡도 N^2 => 10000000000
return counter;
}
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(int N, vector<int> &A) {
// write your code in C++14 (g++ 6.2.0)
vector<int> counter(N,0);
int max_counter = 0;
int last_max_counter = 0;
//시간복잡도 N
for(int i = 0; i<A.size(); i++){
if(A[i] == N+1){
last_max_counter = max_counter;
}else{
if(A[i] >=1 && A[i] <= N){
if(counter[A[i]-1] < last_max_counter) counter[A[i]-1] = last_max_counter+1;
else counter[A[i]-1] ++;
max_counter = max(max_counter, counter[A[i]-1]);
}
}
}
for(int i =0; i<counter.size(); i++){
if(counter[i] < last_max_counter){
counter[i] = last_max_counter;
}
}
return counter;
}
Solution.java:1: error: illegal character: '#' #include <iostream> ^ Solution.java:1: error: class, interface, or enum expected #include <iostream> ^ Solution.java:2: error: illegal character: '#' #include <vector> ^ Solution.java:3: error: illegal character: '#' #include <algorithm> ^ Solution.java:6: error: class, interface, or enum expected vector<int> solution(int N, vector<int> &A) { ^ Solution.java:10: error: class, interface, or enum expected int max_counter = 0; ^ Solution.java:11: error: class, interface, or enum expected int last_max_counter = 0; ^ Solution.java:14: error: class, interface, or enum expected for(int i = 0; i<A.size(); i++){ ^ Solution.java:14: error: class, interface, or enum expected for(int i = 0; i<A.size(); i++){ ^ Solution.java:14: error: class, interface, or enum expected for(int i = 0; i<A.size(); i++){ ^ Solution.java:17: error: class, interface, or enum expected }else{ ^ Solution.java:20: error: class, interface, or enum expected else counter[A[i]-1] ++; ^ Solution.java:22: error: class, interface, or enum expected max_counter = max(max_counter, counter[A[i]-1]); ^ Solution.java:23: error: class, interface, or enum expected } ^ Solution.java:27: error: class, interface, or enum expected for(int i =0; i<counter.size(); i++){ ^ Solution.java:27: error: class, interface, or enum expected for(int i =0; i<counter.size(); i++){ ^ Solution.java:30: error: class, interface, or enum expected } ^ Solution.java:35: error: class, interface, or enum expected } ^ 18 errors
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(int N, vector<int> &A) {
// write your code in C++14 (g++ 6.2.0)
vector<int> counter(N,0);
int max_counter = 0;
int last_max_counter = 0;
//시간복잡도 N
for(int i = 0; i<A.size(); i++){
if(A[i] == N+1){
last_max_counter = max_counter;
}else{
if(A[i] >=1 && A[i] <= N){
if(counter[A[i]-1] < last_max_counter) counter[A[i]-1] = last_max_counter+1;
else counter[A[i]-1] ++;
max_counter = max(max_counter, counter[A[i]-1]);
}
}
}
for(int i =0; i<counter.size(); i++){
if(counter[i] < last_max_counter){
counter[i] = last_max_counter;
}
}
return counter;
}
using namespace std;
vector<int> solution(int N, vector<int> &A) {
// write your code in C++14 (g++ 6.2.0)
vector<int> counter(N,0);
int max_counter = 0;
int last_max_counter = 0;
//시간복잡도 N
for(int i = 0; i<A.size(); i++){
if(A[i] == N+1){
last_max_counter = max_counter;
}else{
if(A[i] >=1 && A[i] <= N){
if(counter[A[i]-1] < last_max_counter) counter[A[i]-1] = last_max_counter+1;
else counter[A[i]-1] ++;
max_counter = max(max_counter, counter[A[i]-1]);
}
}
}
for(int i =0; i<counter.size(); i++){
if(counter[i] < last_max_counter){
counter[i] = last_max_counter;
}
}
return counter;
}
using namespace std;
vector<int> solution(int N, vector<int> &A) {
// write your code in C++14 (g++ 6.2.0)
vector<int> counter(N,0);
int max_counter = 0;
int last_max_counter = 0;
//시간복잡도 N
for(int i = 0; i<A.size(); i++){
if(A[i] == N+1){
last_max_counter = max_counter;
}else{
if(A[i] >=1 && A[i] <= N){
if(counter[A[i]-1] < last_max_counter) counter[A[i]-1] = last_max_counter+1;
else counter[A[i]-1] ++;
max_counter = max(max_counter, counter[A[i]-1]);
}
}
}
for(int i =0; i<counter.size(); i++){
if(counter[i] < last_max_counter){
counter[i] = last_max_counter;
}
}
return counter;
}
#include <iostream>
#include <vector>
#include <
using namespace std;
vector<int> solution(int N, vector<int> &A) {
// write your code in C++14 (g++ 6.2.0)
vector<int> counter(N,0);
int max_counter = 0;
int last_max_counter = 0;
//시간복잡도 N
for(int i = 0; i<A.size(); i++){
if(A[i] == N+1){
last_max_counter = max_counter;
}else{
if(A[i] >=1 && A[i] <= N){
if(counter[A[i]-1] < last_max_counter) counter[A[i]-1] = last_max_counter+1;
else counter[A[i]-1] ++;
max_counter = max(max_counter, counter[A[i]-1]);
}
}
}
for(int i =0; i<counter.size(); i++){
if(counter[i] < last_max_counter){
counter[i] = last_max_counter;
}
}
return counter;
}
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(int N, vector<int> &A) {
// write your code in C++14 (g++ 6.2.0)
vector<int> counter(N,0);
int max_counter = 0;
int last_max_counter = 0;
//시간복잡도 N
for(int i = 0; i<A.size(); i++){
if(A[i] == N+1){
last_max_counter = max_counter;
}else{
if(A[i] >=1 && A[i] <= N){
if(counter[A[i]-1] < last_max_counter) counter[A[i]-1] = last_max_counter+1;
else counter[A[i]-1] ++;
max_counter = max(max_counter, counter[A[i]-1]);
}
}
}
for(int i =0; i<counter.size(); i++){
if(counter[i] < last_max_counter){
counter[i] = last_max_counter;
}
}
return counter;
}
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(int N, vector<int> &A) {
// write your code in C++14 (g++ 6.2.0)
vector<int> counter(N,0);
int max_counter = 0;
int last_max_counter = 0;
//시간복잡도 N
for(int i = 0; i<A.size(); i++){
if(A[i] == N+1){
last_max_counter = max_counter;
}else{
if(A[i] >=1 && A[i] <= N){
if(counter[A[i]-1] < last_max_counter) counter[A[i]-1] = last_max_counter+1;
else counter[A[i]-1] ++;
max_counter = max(max_counter, counter[A[i]-1]);
}
}
}
for(int i =0; i<counter.size(); i++){
if(counter[i] < last_max_counter){
counter[i] = last_max_counter;
}
}
return counter;
}
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(int N, vector<int> &A) {
// write your code in C++14 (g++ 6.2.0)
vector<int> counter(N,0);
int max_counter = 0;
int last_max_counter = 0;
//시간복잡도 N
for(int i = 0; i<A.size(); i++){
if(A[i] == N+1){
last_max_counter = max_counter;
}else{
if(A[i] >=1 && A[i] <= N){
if(counter[A[i]-1] < last_max_counter) counter[A[i]-1] = last_max_counter+1;
else counter[A[i]-1] ++;
max_counter = max(max_counter, counter[A[i]-1]);
}
}
}
for(int i =0; i<counter.size(); i++){
if(counter[i] < last_max_counter){
counter[i] = last_max_counter;
}
}
return counter;
}
The solution obtained perfect score.